1. Field of the Invention
This invention relates to programming interfaces for industrial control systems. In a particularly preferred embodiment, this invention relates to a programming interface for an industrial control system in which the control system comprises multiple motion control axes, and in which the programming interface graphically provides the user with data flow information pertaining to the physical relationship between the various motion control axes.
2. Description of Related Art
Industrial control systems are used in a wide variety of operations such as manufacturing, processing, packaging and so on. Typically, an industrial control system comprises one or more industrial controllers, such as programmable controllers, which control a plurality of output devices based on input status information from a plurality of input devices.
In a multi-axis industrial control system, the industrial control system also comprises multiple motion control axes. Each motion control axis comprises a motion control system that may include for example a motion controller, a servo drive and an electric motor. Like the other output devices, the various motors of the motion control axes are controlled based on input status information from the plurality of input devices. The motion control axes are controlled in coordinated fashion such that various activities occur in synchronism as required by the controlled process.
Each motion controller is connected to a respective one of the servo drives that is in turn connected to a respective one of the motors. In combination, the motion controller and the servo drive implement a position feedback control loop, a velocity feedback control loop that is nested within the position feedback control loop, and a torque/current control loop that is nested with the velocity feedback control loop. (Because torque and current are proportional, the same loop can be viewed as either a torque control loop or a current control loop.) In combination, the motion controller and the servo drive are capable of accepting a position command and in response generating current to drive the motor and thereby to control the motor to obtain the commanded position. Motion controllers may for example be provided in the form of modules for a programmable controller system or as PC-based expansion cards or stand-alone units that communicate with the programmable controller system via a network communication link. Servo drives are usually provided as stand-alone units or are integrated with stand-alone motion controllers.
Industrial control systems typically operate based on execution of a user program that is tailored to the industrial control system and its intended use. The user program may be executed in the processor module of the industrial controller, or distributed computing techniques may be utilized such that the user program (which may comprise multiple subprograms) is executed both at the processor module and at the motion controllers. In an industrial control system with multiple industrial controllers, the user program may also be executed at the other industrial controllers and any additional motion controllers associated with the other industrial controllers.
Conventionally, industrial control systems have been programmed using sequential programming languages, such as ladder logic languages. Typically, with a windows-based sequential programming interface, the user program is graphically displayed in the form of a series of commands that are executed sequentially. For example, during programming, the user may drag and drop a timer icon and a move icon into the user program. When the user clicks on the timer icon, a dialog box appears that allows the user to program the timer for a specified period of time. Likewise, when the user clicks on the move icon, a dialog box appears that allows the user to program the parameters of the move, such as the final position, the maximum velocity, and so on. The user may then connect timer icon and the move icon with a connection line to indicate that, after the timer icon is executed, the move icon should be executed. Thus, the way in which the program is organized on the screen is indicative of the sequence of events that is programmed to occur.
When a move or other motion command is executed, the position control loop is provided with incremental reference position information to control the motor to obtain the commanded position. In practice, the position reference values may be provided every few milliseconds or so in the form of delta position information (change in position since the last update time) rather than absolute position information. The position control loop then compares the actual position of the motor (obtained from a feedback sensor) with a given position reference, and operates to cause the motor to xe2x80x9cchase afterxe2x80x9d the position references until the final position is reached.
In addition to move commands, other types of commands are also available to users in multi-axis situations. For example, it is known to implement gear relationships and position cams in a sequential programming language environment. For example, a gear icon may be provided (or a pair of icons for starting and stopping) that allows a user to program a gear ratio between two motion control axes. When the user clicks on the gear icon, a dialog box appears that allows the user to program the parameters of the two-axis relationship. Typically, one motion control axis will be designated as the master axis, another motion control axis will be designated as the slave axis, and a gear relationship will be specified between the two axes. Additional slave axes may also be specified. Then, in operation, when the start-gear icon is encountered, the two motion control systems for the two motors will operate to electronically maintain the specified ratio between the two motion axes.
This arrangement has worked well in situations where the number of motion control axes is relatively small. When there are only a few motion control axes in the motion control system, it is not particularly difficult for the user to maintain an understanding of the relationships between the various motion control axes.
However, as industrial control systems have become more complex, this arrangement has been found to be unsatisfactory. In some systems, it is possible to have thirty-two or sixty-four motion control axes in a single industrial control system. In such situations, it is difficult for the user to maintain an understanding of the relationships between the various motion control axes due to the large number of axes in the industrial control system. The relationship between various motion control axes is not readily ascertainable with existing programming interfaces. For example, the gearing relationship between two axes is normally not displayed to the user unless the user clicks on the gear icon to bring up the dialog box that provides additional information. As the number of motion control axes increases, it becomes increasingly cumbersome to have to click on each individual icon to obtain additional information regarding the relationship of the various motion control axes. There is no way to simultaneously display information pertaining to the physical relationship between the various motion control axes in a single, coherent manner.
Additionally, a further complication arises where multiple industrial controllers are used in the motion control system and each industrial controller is individually programmed. For example, if multiple programmable logic controllers are used, and each programmable controller has its own user program with each user program controlling only a subset of the various motion control axes, then the physical interrelationship is not ascertainable from any given one of the user programs, regardless of how the information is displayed to the user.
Finally, this arrangement provides only limited flexibility and does not easily allow for complex relationships between motion control axes. In conventional systems that employ a sequential programming language, the number of motion commands that can be employed for any given axis is typically fixed at a small number of different types. The use of virtual axes in these systems provides additional flexibility, but is cumbersome and hampers the user""s efforts to maintain an overall understanding of the physical system.
The present invention overcomes the drawbacks of existing approaches. According to a first aspect of the invention, the invention provides a method of programming an industrial control system comprising connecting a first, second, and third icons with first and second data flow lines and displaying the connection of the first, second, and third icons with the first and second data flow lines to a user. The first icon represents a first motion control axis that includes a first controlled electric motor, the second icon represents a second motion control axis that includes a second controlled electric motor, and the third icon represents a physical relationship between the first motion control axis and the second motion control axis. The connecting and displaying steps (A) and (B) are performed by a programming interface in response to user inputs received at a human-machine interface.
Preferably, the first and second data flow lines represent the flow of position information between first and third icons and the third and second icons, respectively. The third icon may for example be a gear icon or a position cam icon. Preferably, all three icons are implemented as objects in an object-oriented programming environment.
The first and second motion control axes may be associated with two different industrial controllers that are connected to each other by a network communication link. In this event, the displaying steps are performed in a manner such that the use of the two different industrial controllers is transparent to the user.
According to another aspect of the invention, an industrial control system comprises a first motion control system including a first motor and a first motion controller, a second motion control system including a second motor and a second motion controller, and a user program. The user program is executable by the industrial control system to control the first and second motion control systems.
When the user program is displayed to a user, the user program comprises the following graphical elements. In particular, the user program includes a first icon which represents the first motion control system, a second icon which represents the second motion control system, and a third icon which represents a physical relationship between the first and second motion control systems. Finally, also displayed to the user is a plurality of data flow lines that connect the first, second, and third icons and that represent a flow of data between the icons. Again, the various icons are all preferably implemented in an object-oriented programming environment.
Advantageously, the programming interface according to the preferred embodiment of the invention explicitly indicates the physical relationship between the various motion control axes. The various motion control axes are represented by icons, and the icons are connected with connection lines that represent data flow between the motion control axes. Additional icons are provided that show relationships such as gearing, position cams, time cams, and so on. The programming interface is thus organized based on the physical relationship between the axes, and the physical relationships for the entire system are displayed to the user in a single workspace, without the user having to click on numerous icons.
Additionally, further advantages are provided where motion control axes are used that are connected to multiple industrial controllers. The preferred programming interface graphically provides the user with concise information regarding the physical relationships between various motion control axes throughout the entire industrial control system, even though some of the motion control axes are coupled to different industrial controllers. The programming interface makes it possible to display this information without cluttering the display with implementation details, such as those pertaining to the network and hardware implementation of the various motion control systems. The programming interface therefore facilitates programming at the system level.
Finally, the preferred programming interface is robust and readily allows users to define complex relationships between motion control axes. The programming interface allows numerous motion commands to be employed for each axis. The programming interface also lends to the utilization of new types of relationships including user-defined relationships.
Other objects, features, and advantages of the present invention will become apparent to those skilled in the art from the following detailed description and accompanying drawings. It should be understood, however, that the detailed description and specific examples, while indicating preferred embodiments of the present invention, are given by way of illustration and not limitation. Many modifications and changes within the scope of the present invention may be made without departing from the spirit thereof, and the invention includes all such modifications.